/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>SC</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 *             An ST that optionally may have a code attached.
 *             The text must always be present if a code is present. The
 *             code is often a local code.
 *          
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.hl7.v3.SC#getCode <em>Code</em>}</li>
 *   <li>{@link org.hl7.v3.SC#getCodeSystem <em>Code System</em>}</li>
 *   <li>{@link org.hl7.v3.SC#getCodeSystemName <em>Code System Name</em>}</li>
 *   <li>{@link org.hl7.v3.SC#getCodeSystemVersion <em>Code System Version</em>}</li>
 *   <li>{@link org.hl7.v3.SC#getDisplayName <em>Display Name</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.hl7.v3.V3Package#getSC()
 * @model extendedMetaData="name='SC' kind='mixed'"
 * @generated
 */
public interface SC extends ST1 {
	/**
	 * Returns the value of the '<em><b>Code</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      The plain code symbol defined by the code system.
	 *                      For example, "784.0" is the code symbol of the ICD-9
	 *                      code "784.0" for headache.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code</em>' attribute.
	 * @see #setCode(String)
	 * @see org.hl7.v3.V3Package#getSC_Code()
	 * @model dataType="org.hl7.v3.Cs"
	 *        extendedMetaData="kind='attribute' name='code'"
	 * @generated
	 */
	String getCode();

	/**
	 * Sets the value of the '{@link org.hl7.v3.SC#getCode <em>Code</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code</em>' attribute.
	 * @see #getCode()
	 * @generated
	 */
	void setCode(String value);

	/**
	 * Returns the value of the '<em><b>Code System</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Specifies the code system that defines the code.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code System</em>' attribute.
	 * @see #setCodeSystem(String)
	 * @see org.hl7.v3.V3Package#getSC_CodeSystem()
	 * @model dataType="org.hl7.v3.Uid"
	 *        extendedMetaData="kind='attribute' name='codeSystem'"
	 * @generated
	 */
	String getCodeSystem();

	/**
	 * Sets the value of the '{@link org.hl7.v3.SC#getCodeSystem <em>Code System</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code System</em>' attribute.
	 * @see #getCodeSystem()
	 * @generated
	 */
	void setCodeSystem(String value);

	/**
	 * Returns the value of the '<em><b>Code System Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      A common name of the coding system.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code System Name</em>' attribute.
	 * @see #setCodeSystemName(String)
	 * @see org.hl7.v3.V3Package#getSC_CodeSystemName()
	 * @model dataType="org.hl7.v3.St"
	 *        extendedMetaData="kind='attribute' name='codeSystemName'"
	 * @generated
	 */
	String getCodeSystemName();

	/**
	 * Sets the value of the '{@link org.hl7.v3.SC#getCodeSystemName <em>Code System Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code System Name</em>' attribute.
	 * @see #getCodeSystemName()
	 * @generated
	 */
	void setCodeSystemName(String value);

	/**
	 * Returns the value of the '<em><b>Code System Version</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      If applicable, a version descriptor defined
	 *                      specifically for the given code system.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Code System Version</em>' attribute.
	 * @see #setCodeSystemVersion(String)
	 * @see org.hl7.v3.V3Package#getSC_CodeSystemVersion()
	 * @model dataType="org.hl7.v3.St"
	 *        extendedMetaData="kind='attribute' name='codeSystemVersion'"
	 * @generated
	 */
	String getCodeSystemVersion();

	/**
	 * Sets the value of the '{@link org.hl7.v3.SC#getCodeSystemVersion <em>Code System Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Code System Version</em>' attribute.
	 * @see #getCodeSystemVersion()
	 * @generated
	 */
	void setCodeSystemVersion(String value);

	/**
	 * Returns the value of the '<em><b>Display Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      A name or title for the code, under which the sending
	 *                      system shows the code value to its users.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Display Name</em>' attribute.
	 * @see #setDisplayName(String)
	 * @see org.hl7.v3.V3Package#getSC_DisplayName()
	 * @model dataType="org.hl7.v3.St"
	 *        extendedMetaData="kind='attribute' name='displayName'"
	 * @generated
	 */
	String getDisplayName();

	/**
	 * Sets the value of the '{@link org.hl7.v3.SC#getDisplayName <em>Display Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Display Name</em>' attribute.
	 * @see #getDisplayName()
	 * @generated
	 */
	void setDisplayName(String value);

} // SC
